package com.erp.auto.controller;

import com.alibaba.fastjson.JSONObject;
import com.erp.auto.domain.ErpAutoEvaluationAssociation;
import com.erp.auto.domain.ErpAutoEvaluationConfig;
import com.erp.auto.domain.dto.ErpAutoEvaluationConfigDto;
import com.erp.auto.mapper.ErpAutoEvaluationAssociationMapper;
import com.erp.auto.service.ErpAutoEvaluationConfigService;
import com.erp.auto.service.ErpAutoEvaluationService;
import com.github.pagehelper.PageHelper;
import com.ruoyi.common.core.domain.R;
import lombok.AllArgsConstructor;
import org.springframework.http.ResponseEntity;
import org.springframework.web.bind.annotation.*;
import org.springframework.web.client.RestTemplate;

import java.time.LocalDate;
import java.time.format.DateTimeFormatter;
import java.util.Arrays;
import java.util.Date;
import java.util.List;


/**
 * 自动测评配置表
 *
 * @author WXX
 * @date 2023-12-25 14:59:30
 */
@RestController
@AllArgsConstructor
@RequestMapping("/auto/evaluation" )
public class ErpAutoEvaluationConfigController {

    private final ErpAutoEvaluationConfigService erpAutoEvaluationConfigService;
    private final ErpAutoEvaluationService evaluationService;

    /**
     * 添加自动公司测评店铺
     */
    @GetMapping("/addCompanyEvaluationShop")
    public R<Object> addCompanyEvaluationShop(String storeUserName) {
       return erpAutoEvaluationConfigService.addCompanyEvaluationShop(storeUserName);
    }

    /**
     * 删除自动公司测评店铺
     */
    @GetMapping("/deleteCompanyEvaluationShop")
    public R<Object> deleteCompanyEvaluationShop(Long id) {
        return erpAutoEvaluationConfigService.deleteCompanyEvaluationShop(id);
    }

    @GetMapping("/executeAutoEvaluationCompany")
    public void executeAutoEvaluationCompany() {
        evaluationService.executeAutoEvaluationCompany();
    }
    
    @GetMapping("/executeAutoEvaluationConfig")
    public R<Object> executeAutoEvaluationConfig() {
        return evaluationService.executeAutoEvaluationConfig();
    }
    
    @GetMapping("/executeAutoEvaluationTask")
    public R<Object> executeAutoEvaluationTask() {
        return evaluationService.executeAutoEvaluationTask();
    }
    
    // 查看单个测评配置
    @GetMapping("/selectEvaluationConfig")
    public R<Object> selectEvaluationConfig(@RequestParam("id") Long id, @RequestParam("type") String type) {
        if (id == null) {
            return R.fail( "id不能为空");
        }
        return R.ok(erpAutoEvaluationConfigService.selectErpAutoEvaluationConfigById(id, type));
    }

    // 保存整体测评
    @PostMapping("/saveEvaluationConfig")
    public R<Object> saveEvaluationConfig(@RequestBody ErpAutoEvaluationConfigDto evaluationConfigDto) {

        boolean save = erpAutoEvaluationConfigService.saveEvaluationConfig(evaluationConfigDto);
        return R.ok(save);
    }

    // 废弃
    @GetMapping("/getList")
    public R<Object> getList(@RequestParam(defaultValue = "1") Integer pageNum,
                             @RequestParam(defaultValue = "10") Integer pageSize) {

        PageHelper.startPage(pageNum, pageSize);
        return R.ok(erpAutoEvaluationConfigService.getList());
    }

    @GetMapping("/updateStatusById")
    public R<Object> updateStatusById(@RequestParam("id") Long id, @RequestParam("type") String type) {
        int save = erpAutoEvaluationConfigService.updateStatusById(id, type);
        if (save > 0) {
            return R.ok();
        }
        return R.fail();
    }

//    @GetMapping("/test")
//    public void EvaluationExecute() {
//
//        ErpAutoEvaluationConfig searchConfig = new ErpAutoEvaluationConfig();
//        searchConfig.setStatus(1);
//        List<ErpAutoEvaluationConfig> list = erpAutoEvaluationConfigService.getListByConfig(searchConfig);
//        for (ErpAutoEvaluationConfig erpAutoEvaluationConfig : list) {
//            String openTime = erpAutoEvaluationConfig.getOpenTime();
//            // 获取当前时间
//            DateTimeFormatter formatter = DateTimeFormatter.ofPattern("yyyy-MM-dd");
//            LocalDate givenDate = LocalDate.parse(openTime, formatter);
//            LocalDate today = LocalDate.now();
//            if (!givenDate.isAfter(today)) {
//                RestTemplate restTemplate = new RestTemplate();
//                ResponseEntity<String> responseEntity = restTemplate.postForEntity(  erpConfig.getEndpoint() + "/purchase/autoEvaluation/autoEvaluation", erpAutoEvaluationConfig, String.class);
//                String body = responseEntity.getBody();
//                System.out.println("返回的数据：" + body);
//                // 获取到返回的数据
//                List<ErpAutoEvaluationAssociation> associationList = null;
//                try {
//                    associationList = JSONObject.parseArray(body, ErpAutoEvaluationAssociation.class);
//                }catch (Exception e) {
//                    ErpAutoEvaluationAssociation erpAutoEvaluationAssociation = new ErpAutoEvaluationAssociation();
//                    erpAutoEvaluationAssociation.setConfigId(erpAutoEvaluationConfig.getId());
//                    String message = e.getMessage() + "\n" + Arrays.toString(e.getStackTrace());
//                    if (message.length() > 1000) {
//                        message = message.substring(0,1000);
//                    }
//                    erpAutoEvaluationAssociation.setRemark(message);
//                    erpAutoEvaluationAssociation.setType(4);
//                    erpAutoEvaluationAssociation.setCreateTime(new Date());
//                    erpAutoEvaluationAssociationMapper.insert(erpAutoEvaluationAssociation);
//                    continue;
//                }
//
//                // 保存
//                if (associationList == null) {
//                    continue;
//                }
//                for (ErpAutoEvaluationAssociation erpAutoEvaluationAssociation : associationList) {
//                    erpAutoEvaluationAssociationMapper.insert(erpAutoEvaluationAssociation);
//                }
//            }
//        }
//    }
}
